package com.mindbox.mueblesalpes.negocio.reportes;

import com.mindbox.mueblesalpes.negocio.entity.Cliente;
import com.mindbox.mueblesalpes.negocio.entity.Ciudad;
import java.util.Date;
import javax.ejb.Local;

/**
 * Servicio para generar reportes
 * @author Jaimoto
 */
@Local
public interface IReportes {

    /**
     * Servicio encargado de generar el reporte de ventas a partir de los filtros
     * @param fechaIni Fecha Inicio
     * @param fechaFin Fecha Fin
     * @param ciudad Ciudad
     * @return Reporte de ventas
     * @throws java.lang.Exception
     */
    public ReporteVenta generarReporteVentas(Date fechaIni, Date fechaFin, Ciudad ciudad) throws Exception;

    /**
     * Servicio encargado de generar el reporte de productos mas vendidos a partir de los filtros
     * @param fechaIni Fecha Inicio
     * @param fechaFin Fecha Fin
     * @param ciudad
     * @param cantidad
     * @return Reporte de productos mas vendidos
     * @throws java.lang.Exception
     */
    public ReporteTop generarReporteProductoTop(Date fechaIni, Date fechaFin, Ciudad ciudad, int cantidad) throws Exception;

    /**
     * Servicio encargado de generar el reporte de compras de un cliente partir de los filtros
     * @param cliente Cliente
     * @param fechaIni Fecha Inicio
     * @param fechaFin Fecha Fin
     * @param ciudad Ciudad del Reporte
     * @return Reporte de compras de un cliente
     * @throws java.lang.Exception
     */
    public ReporteCompras generarReporteCompras(Cliente cliente, Date fechaIni, Date fechaFin, Ciudad ciudad) throws Exception;

}
